home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 031-040 / amok31 / intuipointer / intuipointer.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  79 lines

  1. (*---------------------------------------------------------------------------
  2.     :Program.     IntuiPointer.mod
  3.     :Contents.      Prozeduren zum Setzen des Mauszeigers auf 'Busy' (ZZ)
  4.     :Author.      Bernd Preusing
  5.     :Address.      Gerhardstr. 16  D-2200 Elmshorn
  6.     :Phone.      04121/22486
  7.     :Copyright.      Public Domain
  8.     :Language.      Modula-2
  9.     :Translator.  M2Amiga V3.2e
  10.     :History.      V1.0 08-Oct-89 Bernd Preusing
  11.     :Bugs.      none
  12.     :Remark.      Please, create beautiful pointers for me!
  13. ---------------------------------------------------------------------------*)
  14. IMPLEMENTATION MODULE IntuiPointer;
  15.  
  16. FROM SYSTEM IMPORT ADDRESS, ADR, INLINE;
  17. IMPORT Arts, Intuition, Exec;
  18.  
  19. CONST
  20.     POINTERSIZE = (16+2)*2*2; (* never change this! *)
  21.  
  22. VAR
  23.   ZZ: ADDRESS;
  24.   StartLevel: INTEGER;
  25.  
  26. (* $E- *)
  27. PROCEDURE ZZData(); (* I'm busy or tired! *)
  28. BEGIN
  29. INLINE(
  30.     00000H,00000H,
  31.     03E00H,03E00H,
  32.     07FC0H,07FC0H,
  33.     043E0H,07FE0H,
  34.     0F7E0H,0FFE0H,
  35.     0EE10H,0FFF0H,
  36.     0C3B0H,0FFF0H,
  37.     07F70H,07FF0H,
  38.     07E10H,07FF0H,
  39.     03FE0H,03FE0H,
  40.     01FC0H,01FC0H,
  41.     00020H,00020H,
  42.     007E0H,007E0H,
  43.     007C0H,007C0H,
  44.     00330H,00330H,
  45.     00070H,00070H,
  46.     00030H,00030H,
  47.     00000H,00000H
  48. )
  49. END ZZData;
  50.  
  51. PROCEDURE Normal(Win:Intuition.WindowPtr);
  52. BEGIN
  53.   Intuition.ClearPointer(Win);
  54. END Normal;
  55.  
  56. PROCEDURE Busy(Win:Intuition.WindowPtr);
  57. BEGIN
  58.   Intuition.SetPointer(Win,ZZ,16,16,-7,-7);
  59. END Busy;
  60.  
  61. PROCEDURE Exit;
  62. BEGIN
  63.   IF Arts.CurrentLevel()<=StartLevel THEN
  64.     IF ZZ#NIL THEN
  65.       Exec.FreeMem(ZZ,POINTERSIZE);
  66.       ZZ:=NIL;
  67.     END;
  68.   END
  69. END Exit;
  70.  
  71. BEGIN
  72.   StartLevel:=Arts.CurrentLevel();
  73.   ZZ:=NIL;
  74.   Arts.TermProcedure(Exit);
  75.   ZZ:=Exec.AllocMem(POINTERSIZE,Exec.MemReqSet{Exec.chip,Exec.public});
  76.   Arts.Assert(ZZ#NIL,ADR('no chipmem for Busy Pointer'));
  77.   Exec.CopyMem(ADR(ZZData),ZZ,POINTERSIZE);
  78. END IntuiPointer.mod
  79.